# 字符串
s = "python c C++ go sql java "

# 切分方法
print(s.split(" "))

# 替换
print(s.replace("c", "C"))

# 去掉转义字符
# \n 表示换行
# \t 表示制表符
# \r 表示回车符

str1 = "\r  s \n \t "
print(str1)
print("*********")
# strip 方法可以取出掉字符串左右两边的转义字符及空格
print(str1.strip())
print("*********")

# 切片
# [] 切片 格式:
#  [开始位置:结束位置]  所取区间为左闭右开区间[开始位置,结束位置)
#  [开始位置:结束位置:步长]  取数逻辑 先取开始位置，将开始位置加2 判断是否小于结束位置
str2 = "hello world python"
print(str2[0:5])
print(str2[0:5:2])

# 反转
# 如果开始位置和结束位置没有表明情况下  表示从下标为0开始取到末尾
# 如果步长为-表示从后往前取数据
print(str2[::-1])
print(str2[-8:-13:-1])

# 索引/下标
# substring : 给定搜索的字符串内容
# start: 表示str2中字符的开始位置
# end: 表示str2中字符的结束位置
# 返回值：substring所在str2中的下标开始位置
print(str2[1])
print(str2.index("world", 0))

# 长度
print(len(str2))

# 修改值
# 方式一：通过字符串替换
# 方式二：字符串拼接
print(str2[:6] + "java" + str2[-7:])

# 字符串复制
# 字符串 * n 表示复制n份
print("*" * 20)

# 格式化
# 方式一:
# %s 表示字符串格式化符号
# %f 表示浮点数格式化符号 %.nf表示取小数点后n位
# %d 表示整型格式化符号

str3 = "hello"
print("%s world" % (str3))
f = 3.1415
print("%s pie is %f" % (str3, f))
# 对浮点数小数截取
print("%s pie is %.2f" % (str3, f))

i = 34
print("%s %d" % (str3, i))

# 方式二
print("hello {} 今天是{}年 {}月 {}日".format("world", 2022, '08', 22))

# 逻辑运算符
a = 10
b = 3
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a % b)
print(a ** b)  # 取a的b次方
print(a // b)  # 整除

print(2 ** 3 ** 2)  # 64 -> 512 # 注意 多个值取 ** 次方 顺序为从右到左计算
print(10 // 2 // 3)  # 1

# 赋值运算符
a += 1
print(a)

a -= 1
print(a)

a *= 2
print(a)

a /= 2
print(a)

a %= 3
print(a)

# Python为了语法简洁  取消了 a++ a-- 这种写法


# 位运算符
#  & | ^
#         5 4 3 2 1 0
a = 12  # 0 0 1 1 0 0
b = 6  # 0 0 0 1 1 0

print(a & b)  # 0 0 0 1 0 0  => 4   # 对应位置都为1 那么返回 1 其他返回 0
print(a | b)  # 0 0 1 1 1 0  => 14  # 对应位置值出现1 那么返回1 其他返回 0
print(a ^ b)  # 0 0 1 0 1 0  => 10  # 对应位置值不相同那么为 1 位置值相同为0


